package com.tlgen.orm.utils.log;

import java.util.List;

public class SQLLogger {

    // 复用 ColorLogger 中的常量
    private static final String GREEN_BOLD_BRIGHT = ColorLogger.GREEN_BOLD_BRIGHT;
    private static final String BLUE_BOLD_BRIGHT = ColorLogger.BLUE_BOLD_BRIGHT;
    private static final String RESET = ColorLogger.RESET;

    // 复用 ColorLogger 中的图标
    private static final String ROCKET = ColorLogger.ROCKET;
    private static final String CHECK = ColorLogger.CHECK;
    private static final String SEARCH = "🔍"; // 添加搜索图标

    // 自定义 SQL 前缀格式（匹配 printInfoMessage 样式）
    private static final String SQL_STYLE = GREEN_BOLD_BRIGHT + "✨ " + CHECK + " " + ROCKET + " %s" + RESET;

    /**
     * 打印 SQL 语句（完全匹配 ColorLogger 风格）
     *
     * @param sql 可直接执行的 SQL 语句
     */
    public static void printSQL(String sql) {
        System.out.printf(SQL_STYLE + "%n", sql);
    }

    /**
     * 打印带参数的 SQL（自动构建可执行 SQL）
     */
    public static void printSQL(String template, List<Object> params) {
        String executableSql = buildExecutableSql(template, params);
        printSQL(executableSql);
    }

    /**
     * 构建可直接执行的 SQL
     */
    private static String buildExecutableSql(String template, List<Object> params) {
        if (params == null || params.isEmpty()) {
            return template;
        }

        String[] parts = template.split("\\?");
        StringBuilder sql = new StringBuilder(parts[0]);

        for (int i = 0; i < params.size(); i++) {
            sql.append(quoteParam(params.get(i)));
            if (i < parts.length - 1) {
                sql.append(parts[i + 1]);
            }
        }

        return sql.toString();
    }

    /**
     * 为参数添加单引号
     */
    private static String quoteParam(Object param) {
        if (param == null) {
            return "'NULL'";
        }
        return "'" + param.toString() + "'";
    }

}